/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package agb.Modelo;

import agb.Conexion.Conexion;
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;

/**
 *
 * @author Inicial
 */
public class GaleriaFotos {
    private  String nombreGaleria, nombreFoto, tituloFoto,nombreSubgaleria, 
            fechaDesdeGaleria, fechaHastaGalera, activo;
    private int codGaleria, codSubGaleria, codFoto;
private String mensaje;

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    @Override
    public String toString() {
        return "GaleriaFotos{" + "nombreGaleria=" + nombreGaleria + ", nombreSubgaleria=" + nombreSubgaleria +", activo=" + activo + ", codGaleria=" + codGaleria + ", codSubGaleria=" + codSubGaleria +  '}';
    }

    /**
     * @return the nombreGaleria
     */
    public String getNombreGaleria() {
        return nombreGaleria;
    }

    /**
     * @param nombreGaleria the nombreGaleria to set
     */
    public void setNombreGaleria(String nombreGaleria) {
        this.nombreGaleria = nombreGaleria;
    }

    /**
     * @return the nombreFoto
     */
    public String getNombreFoto() {
        return nombreFoto;
    }

    /**
     * @param nombreFoto the nombreFoto to set
     */
    public void setNombreFoto(String nombreFoto) {
        this.nombreFoto = nombreFoto;
    }

    /**
     * @return the tituloFoto
     */
    public String getTituloFoto() {
        return tituloFoto;
    }

    /**
     * @param tituloFoto the tituloFoto to set
     */
    public void setTituloFoto(String tituloFoto) {
        this.tituloFoto = tituloFoto;
    }

    /**
     * @return the nombreSubgaleria
     */
    public String getNombreSubgaleria() {
        return nombreSubgaleria;
    }

    /**
     * @param nombreSubgaleria the nombreSubgaleria to set
     */
    public void setNombreSubgaleria(String nombreSubgaleria) {
        this.nombreSubgaleria = nombreSubgaleria;
    }

    /**
     * @return the fechaDesdeGaleria
     */
    public String getFechaDesdeGaleria() {
        return fechaDesdeGaleria;
    }

    /**
     * @param fechaDesdeGaleria the fechaDesdeGaleria to set
     */
    public void setFechaDesdeGaleria(String fechaDesdeGaleria) {
        this.fechaDesdeGaleria = fechaDesdeGaleria;
    }

    /**
     * @return the fechaHastaGalera
     */
    public String getFechaHastaGalera() {
        return fechaHastaGalera;
    }

    /**
     * @param fechaHastaGalera the fechaHastaGalera to set
     */
    public void setFechaHastaGalera(String fechaHastaGalera) {
        this.fechaHastaGalera = fechaHastaGalera;
    }

    /**
     * @return the activo
     */
    public String getActivo() {
        return activo;
    }

    /**
     * @param activo the activo to set
     */
    public void setActivo(String activo) {
        this.activo = activo;
    }

    /**
     * @return the codGaleria
     */
    public int getCodGaleria() {
        return codGaleria;
    }

    /**
     * @param codGaleria the codGaleria to set
     */
    public void setCodGaleria(int codGaleria) {
        this.codGaleria = codGaleria;
    }

    /**
     * @return the codSubGaleria
     */
    public int getCodSubGaleria() {
        return codSubGaleria;
    }

    /**
     * @param codSubGaleria the codSubGaleria to set
     */
    public void setCodSubGaleria(int codSubGaleria) {
        this.codSubGaleria = codSubGaleria;
    }

    /**
     * @return the codFoto
     */
    public int getCodFoto() {
        return codFoto;
    }

    /**
     * @param codFoto the codFoto to set
     */
    public void setCodFoto(int codFoto) {
        this.codFoto = codFoto;
    }

    public static boolean registroGaleria( GaleriaFotos oGaleria){
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "INSERT INTO galeria(codigo_galeria, nombre_galeria,fechadesde_galeria, fechahasta_galeria ) " +
                "values(nextval('galeria_seq'),?, to_date(?, 'DD/MM/YYYY'),to_date(?, 'DD/MM/YYYY'))" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oGaleria.getNombreGaleria());
            ps.setString(2, oGaleria.getFechaDesdeGaleria());
            ps.setString(3, oGaleria.getFechaHastaGalera());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

       public static boolean eliminarGaleria(int codGaleria){
        boolean rpta = false;
        Connection cn = null;

        PreparedStatement ps = null;

        String sql = "DELETE FROM galeria  WHERE codigo_galeria = ?" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codGaleria);
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }
   public static GaleriaFotos  buscaGalerias(int codGaleria){
        GaleriaFotos oGaleria = new GaleriaFotos();

        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select g.codigo_galeria, g.nombre_galeria, to_char(g.fechadesde_galeria,'DD/MM/YYYY'), to_char(g.fechahasta_galeria,'DD/MM/YYYY'), g.activo " +
                "from galeria g " +
                "where g.codigo_galeria = ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codGaleria);
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setCodGaleria(rs.getInt(1));
                oGaleria.setNombreGaleria(rs.getString(2));
                oGaleria.setFechaDesdeGaleria(rs.getString(3));
                oGaleria.setFechaHastaGalera(rs.getString(4));
                oGaleria.setActivo(rs.getString(5));

            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oGaleria;
    }
    public static boolean actualizaGaleria( GaleriaFotos oGaleria){
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "UPDATE galeria SET nombre_galeria = ?, " +
                "fechadesde_galeria = To_date(?,'DD/MM/YYYY'), " +
                "fechahasta_galeria = To_date(?,'DD/MM/YYYY'), " +
                "activo = ? " +
                "where codigo_galeria = ?" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oGaleria.getNombreGaleria());
            ps.setString(2, oGaleria.getFechaDesdeGaleria());
            ps.setString(3, oGaleria.getFechaHastaGalera());
            ps.setString(4, oGaleria.getActivo());
            ps.setInt(5, oGaleria.getCodGaleria());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

   public static ArrayList<GaleriaFotos>  listaGalerias(){
        GaleriaFotos oGaleria = null;
        ArrayList<GaleriaFotos> LGaleria = new ArrayList<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select g.codigo_galeria, g.nombre_galeria,to_char(g.fechadesde_galeria, 'DD/MM/YYYY'), to_char(g.fechahasta_galeria, 'DD/MM/YYYY'), g.activo " +
                "from  galeria g " +
                "order by g.nombre_galeria" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setCodGaleria(rs.getInt(1));
                oGaleria.setNombreGaleria(rs.getString(2));
                oGaleria.setFechaDesdeGaleria(rs.getString(3));
                oGaleria.setFechaHastaGalera(rs.getString(4));
                oGaleria.setActivo(rs.getString(5));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }

    public static ArrayList<GaleriaFotos>  listaGaleriasActivo(){
        GaleriaFotos oGaleria = null;
        ArrayList<GaleriaFotos> LGaleria = new ArrayList<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select g.codigo_galeria, g.nombre_galeria,g.fechadesde_galeria, g.fechahasta_galeria " +
                "from  galeria g " +
                "where g.activo = 'Y' " +
                "order by g.nombre_galeria" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setCodGaleria(rs.getInt(1));
                oGaleria.setNombreGaleria(rs.getString(2));
                oGaleria.setFechaDesdeGaleria(rs.getString(3));
                oGaleria.setFechaHastaGalera(rs.getString(4));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }
public static ArrayList<GaleriaFotos>  listaSubGaleriasPorGaleria()
{
     GaleriaFotos oGaleria = null;
        ArrayList<GaleriaFotos> LGaleria = new ArrayList<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select s.codigo_subgaleria, s.nombre,g.codigo_galeria, g.nombre_galeria,s.activo " +
                "from galeria g " +
                "inner join subgaleria s on g.codigo_galeria = s.cod_galeria " +
           //    "where  " +
               // "s.activo = 'Y' " +
                "order by s.nombre " ;
        try
        {
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
           
            rs = ps.executeQuery();
            
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setCodSubGaleria(rs.getInt(1));
                oGaleria.setNombreSubgaleria(rs.getString(2));
                oGaleria.setNombreGaleria(rs.getString(4));
                oGaleria.setActivo(rs.getString(5));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }
        catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
}
    public static Vector<GaleriaFotos>  listaSubGaleriasPorGaleria(int codGaleria){
        GaleriaFotos oGaleria = null;
        Vector<GaleriaFotos> LGaleria = new Vector<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select s.codigo_subgaleria, s.nombre " +
                "from galeria g " +
                "inner join subgaleria s on g.codigo_galeria = s.cod_galeria " +
                "where g.codigo_galeria = ? " +
                "and s.activo = 'Y' " +
                "order by s.nombre " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codGaleria);
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setCodSubGaleria(rs.getInt(1));
                oGaleria.setNombreSubgaleria(rs.getString(2));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }

   public static boolean registroSubGaleria( GaleriaFotos oGaleria){
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "INSERT INTO subgaleria(codigo_subgaleria, nombre, cod_galeria) " +
                "values(nextval('subgaleria_seq'), ?,?)" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oGaleria.getNombreSubgaleria());
            ps.setInt(2, oGaleria.getCodGaleria());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

   public static boolean eliminarSubGaleria(int codigo)
   {
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "delete from subgaleria " +
                
                "where codigo_subgaleria = ?" ;
        try
        {
             cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setInt(1,codigo);
           
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }
        catch(SQLException ex)
        {
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
   }
   public static boolean actualizaSubGaleria( GaleriaFotos oGaleria){
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "UPDATE subgaleria " +
                "SET nombre = ?, " +
                "cod_galeria  = ?, " +
                "activo = ? " +
                "where codigo_subgaleria = ?" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oGaleria.getNombreSubgaleria());
            ps.setInt(2, oGaleria.getCodGaleria());
            ps.setString(3, oGaleria.getActivo());
            ps.setInt(4, oGaleria.getCodSubGaleria());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

   public static Vector<GaleriaFotos>  listaSubGaleriasGaleria(int codGaleria){
        GaleriaFotos oGaleria = null;
        Vector<GaleriaFotos> LGaleria = new Vector<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select s.codigo_subgaleria, s.nombre, s.activo, g.nombre_galeria " +
                "from subgaleria s inner join galeria g " +
                "on s.cod_galeria = g.codigo_galeria " +
                " where s.cod_galeria = ? " +
                "order by s.nombre " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codGaleria);
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setCodSubGaleria(rs.getInt(1));
                oGaleria.setNombreSubgaleria(rs.getString(2));
                oGaleria.setActivo(rs.getString(3));
                oGaleria.setNombreGaleria(rs.getString(4));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }

      public static GaleriaFotos  BuscaSubGaleria(int codSubGaleria){
        GaleriaFotos oGaleria = new GaleriaFotos();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select s.codigo_subgaleria, s.nombre, s.cod_galeria, s.activo " +
                "from subgaleria s " +
                "where s.codigo_subgaleria = ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1,  codSubGaleria);
            rs = ps.executeQuery();
            while(rs.next()){                
                oGaleria.setCodSubGaleria(rs.getInt(1));
                oGaleria.setNombreSubgaleria(rs.getString(2));
                oGaleria.setCodGaleria(rs.getInt(3));
                oGaleria.setActivo(rs.getString(4));
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oGaleria;
    }

      public static GaleriaFotos  BuscaFoto(int codFoto){
        GaleriaFotos oGaleria = new GaleriaFotos();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select f.codigo_foto, f.nombre_foto, f.titulo_foto, " +
                "f.cod_subgaleria, s.cod_galeria, f.activo " +
                "from fotos f " +
                "inner join subgaleria s on f.cod_subgaleria = s.codigo_subgaleria " +
                "where f.codigo_foto = ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1,  codFoto);
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria.setCodFoto(rs.getInt(1));
                oGaleria.setNombreFoto(rs.getString(2));
                oGaleria.setTituloFoto(rs.getString(3));
                oGaleria.setCodSubGaleria(rs.getInt(4));
                oGaleria.setCodGaleria(rs.getInt(5));
                oGaleria.setActivo(rs.getString(6));
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return oGaleria;
    }


    public static Vector<GaleriaFotos>  listaFotosSubGaleria(int codSubGaleria, int offset){
        GaleriaFotos oGaleria = null;
        Vector<GaleriaFotos> LGaleria = new Vector<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select f.nombre_foto, f.titulo_foto, s.codigo_subgaleria  " +
                "from subgaleria s inner join fotos f " +
                "on s.codigo_subgaleria = f.cod_subgaleria " +
                "where s.codigo_subgaleria = ? " +
                "and f.activo = 'Y' " +
                "order by f.fecha_foto " +
                "limit 9 offset ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codSubGaleria);
            ps.setInt(2, offset);
            
            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setNombreFoto(rs.getString(1));
                oGaleria.setTituloFoto(rs.getString(2));
                oGaleria.setCodSubGaleria(rs.getInt(3));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }

    public static Vector<GaleriaFotos>  listaFotosSubGaleriaSec(int codSubGaleria, int offset){
        GaleriaFotos oGaleria = null;
        Vector<GaleriaFotos> LGaleria = new Vector<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select f.nombre_foto, f.titulo_foto, s.codigo_subgaleria  " +
                "from subgaleria s inner join fotos f " +
                "on s.codigo_subgaleria = f.cod_subgaleria " +
                "where s.codigo_subgaleria = ? " +
                "and f.activo = 'Y' " +
                "order by f.fecha_foto " +
                "limit 16 offset ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codSubGaleria);
            ps.setInt(2, offset);

            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setNombreFoto(rs.getString(1));
                oGaleria.setTituloFoto(rs.getString(2));
                oGaleria.setCodSubGaleria(rs.getInt(3));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }


    public static Vector<GaleriaFotos>  listaFotosSubGaleriaTodas(int codSubGaleria){
        GaleriaFotos oGaleria = null;
        Vector<GaleriaFotos> LGaleria = new Vector<GaleriaFotos>();
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select  f.nombre_foto, f.titulo_foto, s.codigo_subgaleria, f.codigo_foto, to_char(f.fecha_foto, 'DD/MM/YYYY'), f.activo   " +
                "from subgaleria s inner join fotos f " +
                "on s.codigo_subgaleria = f.cod_subgaleria " +
                "where s.codigo_subgaleria = ? " +
                "order by f.fecha_foto " ;

        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codSubGaleria);


            rs = ps.executeQuery();
            while(rs.next()){
                oGaleria = new GaleriaFotos();
                oGaleria.setNombreFoto(rs.getString(1));
                oGaleria.setTituloFoto(rs.getString(2));
                oGaleria.setCodSubGaleria(rs.getInt(3));
                oGaleria.setCodFoto(rs.getInt(4));
                oGaleria.setFechaDesdeGaleria(rs.getString(5));
                oGaleria.setActivo(rs.getString(6));
                LGaleria.add(oGaleria);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return LGaleria;
    }

    public static int  ultimoCodigo(){
        int cod = 0;
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select max(f.codigo_foto)+1 " +
                "from fotos f" ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            rs = ps.executeQuery();
            while(rs.next()){
               cod = rs.getInt(1);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return cod;
    }


        public static int numeroPaginas(int codSubGaleria){
        int cod = 0;
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select (count(*)/9)+1 as mumero_paginas " +
                "from fotos f " +
                "where f.activo = 'Y' " +
                "AND f.cod_subgaleria = ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codSubGaleria);
            rs = ps.executeQuery();
            while(rs.next()){
               cod = rs.getInt(1);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return cod;
    }

        public static int numeroPaginasSec(int codSubGaleria){
        int cod = 0;
        Connection cn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        String sql = "select (count(*)/16)+1 as mumero_paginas " +
                "from fotos f " +
                "where f.activo = 'Y' " +
                "AND f.cod_subgaleria = ? " ;
        try{
            cn = Conexion.getConexion();
            ps = cn.prepareStatement(sql);
            ps.setInt(1, codSubGaleria);
            rs = ps.executeQuery();
            while(rs.next()){
               cod = rs.getInt(1);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return cod;
    }

    public static boolean registroFoto( GaleriaFotos oGaleria){
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "INSERT INTO fotos(codigo_foto, titulo_foto, nombre_foto, fecha_foto, cod_subgaleria) " +
                "values(nextval('fotos_seq'),?,?,current_date,? )" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oGaleria.getTituloFoto());
            ps.setString(2, oGaleria.getNombreFoto());
            ps.setInt(3, oGaleria.getCodSubGaleria());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

    public static boolean actualizaFoto( GaleriaFotos oGaleria){
        boolean rpta = false;
        Connection cn = null;
        PreparedStatement ps = null;
        String sql = "UPDATE fotos " +
                "SET titulo_foto= ?, " +
                "nombre_foto = ? , " +
                "cod_subgaleria = ?," +
                " activo = ? " +
                "where codigo_foto = ?" ;
        try{
            cn = Conexion.getConexion();
            cn.setAutoCommit(false);
            ps = cn.prepareStatement(sql);
            ps.setString(1, oGaleria.getTituloFoto());
            ps.setString(2, oGaleria.getNombreFoto());
            ps.setInt(3, oGaleria.getCodSubGaleria());
            ps.setString(4, oGaleria.getActivo());
            ps.setInt(5, oGaleria.getCodFoto());
            rpta = ps.executeUpdate()==1?true:false;
            if(rpta){
                Conexion.confirmarTransaccion(cn);
            }else{
                Conexion.anularTransaccion(cn);
            }
        Conexion.cerrarPreparedStatement(ps);
        Conexion.cerrarConexion(cn);
        }catch(SQLException ex){
            ex.printStackTrace();
            Conexion.cerrarPreparedStatement(ps);
            Conexion.cerrarConexion(cn);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return rpta;
    }

}
